from rest_framework.authentication import BaseAuthentication
from h2004a_md.settings import SECRET_KEY
import jwt
from userapp.models import UserProfile
import string
import random
import datetime


# 自定义我们自己的 令牌认证类
class MyTokenAuth(BaseAuthentication):
    def authenticate(self, request):
        try:
            # 解析令牌
            token = request.GET.get("token")
            uid = jwt.decode(token, SECRET_KEY)["uid"]
            user = UserProfile.objects.get(id=uid)
            # 返回 是一个元组 第一个是 用户对象 第二个是 令牌
            return (user, token)
        except Exception as e:
            print(e)
            return (None, None)


class OrderSN:
    @staticmethod
    def make_sn():
        # 完成 订单号的生成  由时间+4位随机值
        time_str = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
        random_str = "".join(random.sample(string.digits, 4))

        return time_str + random_str
